package com.itheima;

import com.example.EnableHeaderConfig;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

/**
 * 自动配置实现方案一：使用@component组件扫描注解，手动扫描引入的第三方依赖中的bean(使用繁琐、性能低)
 * @Component({"com.example","com.itheima"})  //打破了默认的扫描路径，默认扫描启动类所在包及其子包，需要一并声明

   自动配置实现方案二：通过@Import(xxx.class)导入。使用Import导入的类会被Spring加载到IOC容器中，导入形式有：
    1、导入普通类
    2、导入配置类@Import(HeaderConfig.class)
    3、导入ImportSelector接口实现类
    4、使用@EnableXxx 封装@Import

 1、为什么第三方依赖中使用@Component及其衍生注解声明bean不生效？
    基于@Component及其衍生注解声明的bean要想生效，需要被组件扫描注解扫描到
 2、有哪些方案可以使其生效呢？
   a、@ComponentScan注解扫描指定的包  b、通过@Import注解将其导入到IOC容器中（四种常见方式）:普通类、配置类、ImportSelector实现类、@EnableXxx

1、@Conditional及其衍生注解的作用是什么？
    满足给定条件后，注册对应的bean对象到Spring IOC容器钟
2、Coditional及其衍生注解可以作用在什么地方？
    方法上：针对于当前这个方法声明的bean
    类上：针对与这个类中所有的方法声明的bean

 */
@EnableHeaderConfig
@SpringBootApplication
public class SpringbootWebConfigApplication {
    public static void main(String[] args) {
        SpringApplication.run(SpringbootWebConfigApplication.class, args);
    }
}
